Namazu: FAQ


Namazu 2.0に関するよくある質問、ありそうな質問とその答えをま とめた文書です。このファイルの最新版は http://www.namazu.org/FAQ.html にあります。 Namazu 1.3.0.x を対象とした 古いFAQ もあり ます。

目次

Namazu 一般

他の検索エンジンとはどう違うのですか

Namazu はできるかぎりお手軽に使えることを目指しています。 技術的には決して高度なものではありませんが、 手軽に使えるという面では割といい線をいっていると思います。 ただし、別途 KAKASI/ChaSen とその辞書が必要なので使えるディスク容量に余裕がないと使えません。 メイリングリストを開設して比較的活発にメンテナンスが行われているのも特徴といえると思います。

バグみたいなのですが

もしも古い Namazu をお使いならば最新のものを試してみてください。 この FAQもよく読んでみてください。既に解決しているかもしれません。 そうでなければ メイリングリストの方へご報告ください。

こんな機能があったら嬉しいのですが

何か良いアイディアがあれば メイリングリストの方まで要望を提案してください。 有用なものであれば取り入れていきたいと思います。

商用目的のサイトで利用したいのですが

問題ありません。どうぞご利用ください (Namazuの開発への援助は歓迎し ます)。ただし完全に無保証ですのでその点はご了承ください。Namazu の ライセンスは GNU General Public License version 2 に従うものとします。

Namazu の名前の由来は何ですか

特に意味はありません。思いつきで決めました。

Namazu? namazu? - 表記について

Namazu
Namazuのシステム全体のこと
なまず
Namazuのシステム全体のこと (愛敬のある呼び名)
namazu
コマンドラインから実行する検索プログラムのこと
namazu.cgi
CGIプログラムのこと
NAMAZU
未定義
ナマズ
ナマズ目の淡水魚。全長五〇センチメートルに達する。頭が大きくて平た く、体は側扁する。口に幼魚は六本、成魚は四本のひげをもつ。背面・側面は暗 褐色で、不規則な雲形斑紋のある場合が多い。肉は白身で、蒲焼き・鍋物として 美味。日本のほぼ全土、朝鮮半島・中国に分布。近縁種にビワコオオナマズ・イ ワトコナマズがいる。[季]夏。 -- 大辞林初版より
(1)ナマズ科の淡水産の硬骨魚。体は長くのび、五○センチメートルに達する。 頭部は扁平で、口は大きく四本の長いくちひげがある。背びれは極めて小さいが、 臀びれはよく発達して尾びれと結合。体表は滑らかで鱗がない。背部は青黒く、 腹部は白い。食用。日本・東アジアの沼・川に多く、春小流に来て産卵する。 季・夏。<新撰字鏡九> -- 広辞苑第4版より
catfish
ナマズ目 Nematognathi [Siluroidei] の魚の総称;鱗(うろこ) がなく,口の周囲にひげのあるのが特徴;ゴンズイ,ギギを含む. -- ランダムハウス英和大辞典より

初歩的な質問

動きません、教えてください (質問の仕方)

質問する前にまずマニュアルとこの FAQ をしっかり読んでください。ど うしても分からないときは

などについて簡潔な文章で書いてメイリングリ ストまで報告してください(投稿のマナーを参照のこと)。 ただし、質問しても必ず答えが返ってくるとは限らないのでご了承くださ い (答える義務はありません)。

超初心者です、何もわかりませんが使いたいのです

身近に詳しい人を見つけて教えてもらってください。あるいは書籍などで 自習してください。Namazu以前の初歩的な質問をメイリングリストに送ら れても困ります。

森本淳さんのお言葉

我々(?)はあなたのすぐ側には居ないわけですから、
「車のウインカーがつきません」
「ウインカーレバーを倒してみるのは?」
「ok, ウインカーつきました」
程度のアドバイスはできると思いますが、

「車のエンジンがかかりません」というのに対して、 「ではボンネットを開けて、向かって右の前から2番目にあるバッテリーの緑 のフタを外して赤いワイヤーを外して接点部の鉛の覆いを外して接点の銅に緑 青が吹いていたらそれをサンドペーパーでこすって磨いて接点復活剤をかけて また組み上げるのがまず1点。次に向かって左3番目の ECU を開けて CPU の (以下 120 行省略) 」 みたいな指摘は、超人かアポロ13号の地上指令室でもないかぎり、 残念ながらできません。

KAKASI の make ができません

KAKASI のドキュメントを読んでがんばってください。または身近 に詳しい人を見つけて教えてもらってください。

configure 時に nkf を認識してくれないのですが

次の手順でやり直してください。

  1. 環境変数 $PATHに含まれるディレクトリに nkf が存在するか確認し、
  2. config.cache を削除してから ./configure を再実行する

Namazuに必要なソフトウェアに関してはチュートリアル準備とmakeを参照してください。

gettext関連

なぜ GNU gettext をあらかじめインストールすべきなのですか?

Namazuは2.0からlibnmzライブラリを提供しています。 これをアプリケーションにリンクする際には、libintlライブラリも 一緒にリンクしなければなりません。 Namazuに同梱(2.0.12まで)のlibintlライブラリはmake install時にインストール されません

ただし、GNU/Linux(glibc2)の場合はlibintlの実装がCランタイムライブラリ に取り込まれているので、別途入手する必要はありません。

libnmzライブラリを使用するソフトウェアにはSearch::Namazu Perlモジュー ルがあります。

Solarisでmknmzを実行しよう とすると、"Not a catalog file"と表示されてしまいます。

非常に場当たり的な対処ではありますが、configure時に --with-included-gettextオプションを追加して、Solaris gettextの代わり にNamazuに同梱されているGNU gettextライブラリを使うようにしてください。 (2.0.12まで)

Namazu 2.0.13 からは GNU gettext をインストールした上で、 configure時に--with-libintl-prefixオプションで libintl の場所を 明示的に指定してください。 (例: % ./configure --with-libintl-prefix=/usr/local)

NamazuではSolaris gettextはサポートされていません。これはGNU gettext とSolaris gettextではメッセージカタログの形式に互換性がなく、mknmzで 使われているgettext.plスクリプトはGNUフォーマットのメッセージカタログ しか取り扱えないためです。

mknmz関連

インデッ クスの更新中に検索をかけることはできますか?

できます。検索にロックがかかるのはほんの一瞬です。

インデックスの更新中に mknmz を強制終了させるとインデックスは壊れますか?

よっぽどタイミングが悪くないかぎり、壊れません。ただし、 作 業ファイル NMZ.*.tmp、および (インデックスの2重更新を防ぐ) ロックファイル NMZ.lock2 が残ってしまうことがあります。もし 残っていれば削除してください。

どの程度の規模のインデックスが作れますか?

報告のあったもののなかでは 878,914 ファイル、合計 2,167,480,108 bytes の文書を対象にしたものが最大です (現在の世界記録保持者はすぎうらし ろうさんです :-)。
もちろん、このデータが上限というわけではありません。


    [Base]
    Date: Tue Aug 31 18:46:20 1999
    Added Files: 878,914 files
    Total Files: 878,914 files
    Size: 2,167,480,108 bytes
    Added Keywords: 7,339,687 words
    Total Keywords: 7,339,687 words
    Wakati: module_kakasi -ieuc -oeuc -w
    ARGV: '-ahu' '-F' 'B'
    Perl Version: 5.00503
    Namazu Version: 1.4.0.0-beta-8
    System: freebsd
    Time: 79874 sec.
    
    NMZ.f       883950234
    NMZ.fi      3515656
    NMZ.i       721295588
    NMZ.ii      29358748
    NMZ.p       428365331
    NMZ.pi      262144
    NMZ.r       33406075
    NMZ.t       3515656
    NMZ.w       153384197

これより規模の大きいインデックスを作成された方はぜひメイリン グリストにご連絡ください。

mknmz を実行すると sh: no: command not found と表示されてうまく動きません

Namazu は ./configure の実行時に nkf, kakasi (chasen, mecab) のパスを $PATH から検出します。あらかじめ nkf, kakasi (chasen, mecab) を $PATH の 通っているところにインストールしておいてください。

mknmz で Not enough space! で止まっ てしまいます

メモリ不足です。次の項目を参照してください。

mknmz で Out of memory! で止まってしまい ます

大きなファイルを処理していると Out of memory! が発生すること があります。この場合は設定ファイル mknmzrc もしくは .mknmzrc の中の $FILE_SIZE_MAX の値を下げると解決するかもしれ ません。たくさんのファイルを処理していると同じように Out of memory! が発生することがあります。 この場合は設定ファイル mknmzrc もしくは .mknmzrc の中の $ON_MEMORY_MAX の値を下げると解決するかもしれま せん。あるいは、メモリを増設する、という手段が一番、確実かも しれません。

メモりが多くても Out of memory! が発生するときは、OS の limitに引っ掛かっている可能性があります。FreeBSD 2.2.8 + tcsh の環境では次のように実行して解決したという報告がありま す。

% unlimit datasize
% unlimit stacksize

wget で取得してきたファイルのパス名に '%7E' が含まれて困ります

Namazuはインデックス作成時に、パス名に含まれる記号類を URL風に ' %xx' としてエンコードして記録します。ゆえにパス名に含まれる '%7Efoo' は '%257Efoo' のように '%' の部分が '%25' に変換され、嬉しくない結果となります。

このような場合は mknmz 実行時に -U オプションをつけてパス名のエン コードを行わないようにします。 '%7E' はそのまま '%7E' として記録さ れます。

Use of uninitialized value at /usr/local/bin/mknmz line xxxx というメッセージが表示されます

これは Perl の出力する警告です。特に実害はないと思います。 Perlの ヴァージョンによって警告が出たりでなかったりします。
mknmz の一行目から '-w' を取り除くと消えるはずですが、 どういう理由で警告が出ているのかきちんと確認しましょう。

環境変数 LANG 等に ja_JP.utf8 を設定したり、C を設定して日本語の 文書を処理したりすると、この警告が出る場合があります。 環境変数の設定に誤りがないことを確認しましょう。

mknmz を動作させるとコンピューターの負荷が 大変大きくなり他の作業ができません

mknmz を実行する際に unix系のOSの場合には

% nice mknmz <各種引数>

Microsoft Windows2000,XP,Vista等の場合には

c:\> start /low mknmz <各種引数>

として優先度を下げて実行するとフォアグランドの作業がしやすくなる かもしれません。

mknmz を実行すると "Run mknmz with the environment variable PERL_HASH_SEED=0"と 表示して終了してしまいます

perl5.8.1を使っていると思われます。環境変数 PERL_HASH_SEED に 0 を 設定して実行しなおしてください。

これは Perl5.8.1 で導入されたハッシュのランダム化の影響を mknmz が 受けないようにするものです。Perl5.8.0以前、5.8.2以降では この設定は不要です。

macbinary.pl は何をするフィルタなのですか?

MacBinary I/II/III 形式のファイルを他の形式のファイルと間違えて、 誤動作するのを防ぐ排除フィルタです。

namazu関連

namazu.cgi関連

CGIとして動きません

Apache なら srm.conf に

AddHandler cgi-script .cgi

の行を追加すると解決するかもしれません。

.namazurc を見えないように Web serverを設定したいのですが

Apache 1.3 以降であれば .htaccess に


    <FilesMatch "^\.(htaccess|htpasswd|htgroup|namazurc)$">
        order allow,deny
        deny from all
    </FilesMatch>

と設定します。.namazurc だけなら次の通り。


    <Files .namazurc>
        order allow,deny
        deny from all
    </Files>

[namazu 550], SATOH Fumiyasu <fumiya@cij.co.jp> さんのメイ ルより引用。

NMZ.head に checkbox の記述をしてもブラウザ上のチェックボックスがチェックされません

http://www.namazu.org/doc/manual.html#form-idxnamesの記述で

  複数のインデックスを検索するは NMZ.head に checkbox の記述をします。
  <strong>対象インデックス</strong>
  <ul>
  <li><input type="checkbox" name="idxname" value="foo">foo
  <li><input type="checkbox" name="idxname" value="bar">bar
  <li><input type="checkbox" name="idxname" value="baz">baz
  </ul>

とありますが、単に

  <li><input type="checkbox" name="idxname" value="foo" checked>foo

と記述して checked を有効にしても、ブラウザ上のチェックボックスは チェックされません。

これを実現するには、

  % cat NMZ.head.ja NMZ.body.ja NMZ.foot.ja > index.html

などとして、静的にHTMLを生成して、 この index.html の <form> ... </form> の中で、 checked を有効にしてみて下さい。

この理由として namazu.cgi は、CGI引数が渡されたとき、 NMZ.head の中の <form>〜</form>の値を動的に書き換える動作をします。 この"checked"の部分も、CGI引数を見て自動的に付加する部分ですが、 NMZ.headに "checked" を書き込んでしまうと、 CGI引数による書き換えが正しく行われません。

また、cat しただけでは <form method="get" action="{cgi}"> となりますから action="{cgi}"の 部分は action="/cgi-bin/namazu.cgi" などと、適宜書き換えてください。

namazu.cgi で、日本語文字列で検索すると検索結果が文字化けします。

Web サーバが Apache であり、設定ファイルに

SetServerEncoding    UTF-8 

と設定している場合、文字化けを起こします。

これは namazu.cgi が、UTF-8 の入力に対応していないためです。

SetServerEncoding    EUC-JP

で運用してください。

他の Web サーバの場合は、同様の設定項目があれば、EUC-JP で 運用してください。

namazurc のTemplate を指定すると、 インデックスは作成してあるのに、 「現在、 0 の文書がインデックス化され、 0 個のキーワードが登録されています」 と表示されます。

文書数、更新日時等のキーワード置換を利用したい場合は namazurc 側で template を指定せず、mknmzrc 側で指定する $TEMPLATEDIR を用いて template をカスタマイズしてください。

ただし、mknmzrc 側で指定して template をカスタマイズする場合は、 template を修正する度にインデックスを作り直す(アップデートでも可)必要が あります。

namazurc での template 指定は、インデックスのアップデートなしに行いたい 場合に都合が良いと思います。

namazurc 側で template を指定するケースは、既存のインデックスを使った カスタマイズが主です。 例えば、複数のインデックスを使っている場合などは、キーワード置換が 意味を持たない場合が多いため、namazu 側で template を指定することで 手軽にカスタマイズが可能となります。

Windows 関連

インデックス作成の最中にどう いうわけかフロッピーディスクドライヴが動き出して困ります

『ウイルスチェッカが悪さをしている』 『レジストリのなかに "A:" を指すものがある』 とかいうのが良くある原因、と聞いたことがあります。

[namazu 508], Hideyuki SHIRAI (白井秀行) <shirai@rdmg.mgcs.mei.co.jp> さんのメイルより引 用。

インデックス作成の最中に Error! Runtime Exception というメッセージが何度も表示されま す

Windows 上でウィルスチェッカーを常駐させていると mknmz 実行 時に

Error! Runtime Exception

というメッセージが表示されることがあるそうです。その場合には ウィルスチェッカーを停めてから mknmz を再実行してください。

日本語処理関連

mknmzでインデックスを作成する際に 文字コードが正しく認識されないようです

インデックスファイルの書き出しをする際のメッセージがWriting index files... と英語でメッセージが表示されている場合は環境変数LANGの設定を確認してください。 mknmzはLANGに `ja' から始まるlocale名が指定されていない時は日本語の処理を 行いません。 Namazu 2.0 tutorialの 日本語の文書を扱うにはを参照してください。

検索結果が文字化けします (nkf 1.9)

nkf Version 1.9 を使っていませんか? このバージョンのnkfには、全角空白を含む文が文字化けを起こすというバグがあります。 この場合、version 2.04以上にするか、version 1.7 にバージョンを下げましょう。

KAKASI と Chasen のどちらを使うべきでしょう

辞書のメンテナンスが容易なこと、動作が軽いことを考えると KAKASI の方が扱いやすいように思われます。 もちろん本格的な日本語の処理を行うには ChaSen の方が向いています。

KAKASI の辞書を拡張したいのですが

KAKASI付属の kakasidict (テキストファイル) に単語を追加して KAKASI の make 時に一緒に作られた mkkanwa というプログラムを使って バイナリ形式の辞書に変換します。 出来上がった辞書は kanwadict という名前で /usr/local/lib/kakasi あたりにコピーすればよいでしょう。

フリーのかな漢字変換用辞書については馬場肇@京大さんによる Freely available dictionaries for kana-kanji conversion に情報がまとまっています。

MHonArc で処理するときに日本語の Subject: をデコードさせたいのですが

MHonArc 2.4.5 以上を使ってください。resource file として次の 設定を用いるといいでしょう。


    <MIMEARGS>
    text/plain:default=iso-2022-jp
    </MIMEARGS>
    <CHARSETCONVERTERS>
    plain;          iso_2022_jp::str2html;     iso2022jp.pl
    </CHARSETCONVERTERS>

MHonArc 2.6 以降デフォルト値が変更になりました。 Resource file として次の設定を用いるといいでしょう。 (Resource file に漢字を含める場合は JIS コードで記述します。 多少不具合が生じるかもしれませんが、概ね問題ありません。)

    <DECODEHEADS>

    <DEFCHARSET>
    iso-2022-jp
    </DEFCHARSET>

    <CHARSETCONVERTERS>
    plain;          iso_2022_jp::str2html;     iso2022jp.pl
    iso-2022-jp;    iso_2022_jp::str2html;     iso2022jp.pl
    </CHARSETCONVERTERS>

    <!-- Allow MHonArc user to use ISO-2022-JP messages in resource file -->
    <VarRegex>
    \$([^\$\x1B]*)\$(?![^\x1B]*\x1B\([BJ])
    </VarRegex>

MHonArc 2.6 以降の場合で、Perl 5.8 以上の場合は、 http://www.mhonarc.org/archive/html/mhonarc-dev/2003-06/msg00003.html にある eucjp.pl と Resource file を用いると、MHonARC の出力が EUC-JP になります。 また、Resource file は EUC-JP で記述できるので、JIS の'$'文字の問題 を気にする必要がありません。

Unicode(UTF-8)で書かれた日本語文書を処理できますか

nkf 2.04 以上を使ってみてください。nkfがUTF-8に対応していることから plaintext, html, mailnews, mhonarc, rfc, tex, hdml, hnf の形式での UTF-8文書を処理できる可能性があります。

mknmzで使用する外部コマンド

PDF文書のインデックスを作成する際に Unable to convert pdf file (maybecopying protection) という メッセージが出力され変換できません。

そのファイルはパスワード付きのPDF ファイルでしょうか。 その PDF ファイルを acrobatreader でパスワード入力なしに開くことが できるか試してみてください。パスワード付きファイルは処理できません。

また、xpdf1.00以降にLanguage Support Packagesを導入していない 場合にはパスワードがついていなくても同じメッセージがでることがあります。 その場合は、Language Support Packages が必要です。 Xpdf から、xpdf-japanese.tar.gz を入手して付属文書に従って導入してください。

mknmz 実行中 "travel: cole: No such file or directory" と表示されます。

xlhtml/ppthtml のバグです。xlhtml 0.5.1 にバージョンアップして みてください。

mknmz 実行中 "Diagnostic: (xxxx.c:xxx) xxxxx" と表示されます。

wvWare でエラーが発生しています。wvWare が正しく動作するか 確認してください。  GNU libiconv をインストールして wvWare を再コンパイルしてみて ください。

日本語の man ファイルが検索できません。

groff が日本語対応でない場合は、ASCII 文字のみを処理します。

(日本語の man ファイルでも英語の文字列は検索できるものと思います。)

 日本語の man ファイルを正しく処理するには、日本語対応の groff が必要です。日本語対応の groff をインストールして、 インデックスファイルを作り直してください。


Namazu Homepage

$Id: FAQ.html.ja,v 1.31 2011-01-21 01:18:36 knok Exp $
webmaster@namazu.org